#ifndef PLAYGAMESCENE_H
#define PLAYGAMESCENE_H

#include <QIcon>
#include <QDebug>
#include <QLabel>
#include <QWidget>
#include <QPixmap>
#include <QPainter>
#include <QVector>
#include <QPushButton>

#include "click-button.h"
#include "coin-button.h"
#include "slide-button.h"

namespace Ui {
class PlayGameScene;
}

class PlayGameScene : public QWidget
{
    Q_OBJECT

public:
    explicit PlayGameScene(int level, QVector<QVector<bool>> map_data);

    ~PlayGameScene();

private:
    Ui::PlayGameScene *ui;

    // 关卡成功的标签
    QLabel *success_label;

private:
    // 当前关卡
    int level;

    // 当前关卡的地图数据
    QVector<QVector<bool>> map_data;

    // 硬币状态的列表 false 为银币 true 为金币
    bool coin_state_list[4][4];

    // 硬币按钮的列表
    CoinButton *coin_button_list[4][4];

    // 硬币翻转时的音效
    QSound *coin_flip_sound;

    // 游戏胜利时的音效
    QSound *game_success_sound;

    // 游戏胜利时的动画
    QPropertyAnimation *game_success_animation;

public:
    // 返回按钮
    QPushButton *back_button;

private:
    // 重写绘画事件
    void paintEvent(QPaintEvent *) override;

private:
    // 项目UI初始化
    void initUi();

    // 项目UI数据初始化
    void initUiData();

    // 项目数据初始化
    void initData();

    // 项目事件连接初始化
    void initConnect();

private:
    // 游戏胜利的判断
    void judgeGameSuccess();

    // 创建金币背景
    QLabel *createCoinBackground();
};

#endif // PLAYGAMESCENE_H
